Function函式
上次介紹了一些簡單的Function,今天要介紹一些比較複雜但是很實用的。在Dart裡,function被視為物件,可以把function存成變數或是作為其他function的參數來使用
我們先來看個例子:
我們這邊先定義一個「birthday」的function,然而它需要4個參數分別有名子、出生年、月份、日期,最後回傳字串,因為birthday前面的String表示回傳結果的型態
這邊也可以使用命名參數(Name parameters)來改寫這個例子,結果會是一樣的
最後要介紹的function是匿名函式(Anonymous Function),從名子就可以之,它就是沒有名子的function,通常用在容易解決或是只使用一次的function,來看一下例子吧!
forEach是list的method(方法),會代替list內的每個元素並把它作為參數傳進匿名函式中。
(num)=>print("Number is $num")就是匿名函式,可以發現它並沒有名字只由()所組成,而裡面的num則是會被帶進這個函式裡使用的參數
※大家看到這裡是不是也覺得匿名函式非常方便啊!所以在Flutter非常的常見,例如在設定按鈕(Button)或是迭代list都會看見
再來要介紹的是Map,Map是使用key-value的方式來儲存的資料型態,Map是使用大括號{},以key-value的方式定義,我們來看一下例子
Switch
這跟前面介紹過的if有一點像,但是Switch能依照不同的狀態進行不同的處理,讓整體狀態更為直觀並擁有更好的狀態,以下是例子
例外處理
例外顧名思義就是不正常,在程式語言中,若有例外就代表發生了另一件事,原本的流程就會被中斷,在Dart中有一點點不一樣,Dart的例外是指未經處理的例外 (Unchecked exception),雖然Dart不會強迫一定要處理每一個例外,這樣可以讓程式整體看起來比較乾淨整潔,但是函數若發生例外,程式還是會中斷,總而言之,看到問題還是趕快處理起來比較好啦!
※解決方法:
基本上我們會運用try/catch來處理例外事件
Try/catch
將有可能發生例外的程式碼置於 try{ } 裡,當程式碼發生例外時,若與 catch 內預期捕捉到的例外相同,則會執行 catch 裡面的程式碼
可以從結果得知由於執行divide引發了Exception,而觸發執行on IntegerDivisionByZeroException內程式碼最後執行finally內程式碼。
上面是不是有一些沒有看過的東西呢?不要緊張,因為那些又是另一個小主題了,明天會幫大家在做介紹喔
今日總結
今天介紹了一些稍微比較難一點點的東西,明天會把今天沒有說完的繼續補完,還有一些新的東西,介紹完我們就可以正式進入Flutter的世界了